- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Trong chương trình cơ sở bộ xử lý nhúng thời gian thực của tôi, tôi cần in các số thập phân được định dạng. printf/sprintf tiêu chuẩn không có sẵn trong chuỗi công cụ, vì vậy tôi cần phải tự mình triển khai nó.
Tôi đã sử dụng phương pháp đơn giản là chia cho 10 và lấy phần còn lại. Nhưng bộ xử lý mục tiêu của tôi không hỗ trợ phân chia nguyên bản và việc triển khai phần mềm mất nhiều thời gian (hơn 200us) để tính toán. Tôi tự hỏi liệu có cách nào nhanh chóng để lấy số thập phân từ một số mà không chia không?
char* os_prn_decimal(char* outBuf, const char* end, uint32 v)
{
uint32 dgtIdx = 1000000000;
do
{
uint8 dgt = (uint8)(v / dgtIdx);
*outBuf = dgt + '0';
++outBuf;
v = v %dgtIdx;
dgtIdx /= 10;
} while (outBuf < end && dgtIdx > 0);
return outBuf;
}
câu trả lời hay nhất
Giải pháp của bạn trực tiếp tạo ra các số theo đúng thứ tự, nhưng phải trả giá bằng việc chia biến (v/dgtIdx
), mô đun thay đổi (có giá bằng hoặc nhiều hơn phép chia) và chia cho 10. Đây là ba hoạt động tốn kém.
Có thể rẻ hơn nếu tạo số từ bit có trọng số nhỏ nhất trước rồi đảo ngược số. Sau đó chỉ cần chia cho 10 và modulo 10. sử dụng Chia cho 10 bằng cách sử dụng dịch chuyển bit? nghiệm tại và sửa đổi nó để thu được số dư trong cùng phép toán với thương:
uint32_t div10_rem( uint32_t cổ tức, int* dư)
{
thương số uint32_t = (uint32_t)((0x1999999Aull * cổ tức) >> 32);
*số dư = cổ tức - (thương * 10);
thương số trả về;
}
Sau đó chuyển đổi thành chuỗi thập phân có thể hiển thị có thể là:
char* int2dec( uint32_t val, bộ đệm char*)
{
char đảo_chữ số[10] = {0};
uint32_t u = val;
size_t chữ số_count = 0;
trong khi( u > 0 )
{
int d = 0;
u = div10_rem(u, &d );
Reverse_digits[digit_count] = d + '0' ;
chữ số_count++;
}
đệm[digit_count] = '\0' ;
size_t tôi = 0;
for( size_t i = 0; i < chữ số_count; i++ )
{
bộ đệm[i] = Reverse_digits[digit_count - i - 1];
}
trả về bộ đệm;
}
Sau đó, một cách sử dụng ví dụ:
bộ đệm char [11];
printf( "%s", int2dec(val, buffer) ) ;
Nếu sử dụng bộ đệm tĩnh là phù hợp, bạn có thể tránh đảo ngược số:
#defineMAX_DIGITS 10
const char* int2dec(uint32_t val)
{
chữ số char tĩnh[MAX_DIGITS + 1] = {0};
uint32_t u = val;
size_t chữ số_index = MAX_DIGITS - 1;
trong khi( u > 0 )
{
int d = 0;
u = div10_rem(u, &d );
chữ số[digit_index] = d + '0';
chữ số_index--;
}
trả về &chữ số[digit_index + 1];
}
Sau đó, ví dụ:
printf( "%s", int2dec(val ) ) ;
Về thuật toán - in số thập phân trong vòng lặp nhanh (được nhúng), chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/57842331/
Làm cách nào để đổi tên biến trong vòng lặp? Ví dụ: số 1, số 2, số 3, số 4? var array = [2,4,6,8] func ap (number1: Int
Tôi muốn đặt màu nền của Chế độ xem và thay đổi màu này sang màu khác sau một độ trễ nhất định. Đây là cách tôi đã thử: print("setting color 1") self.view.backgroundColor = UICo
Tôi gặp sự cố khi sử dụng phiên nhanh. Dữ liệu phiên không tồn tại giữa các yêu cầu. Như bạn có thể thấy trong đoạn mã bên dưới, tuyến /join đặt một số thuộc tính phiên, nhưng khi /sur
Tôi đang cố gắng để có được một kết quả rất đơn giản từ trình kết xuất lá cho vòng lặp Steam for nhanh. Tôi đang tải lên tệp HTML của lá vì nó không chấp nhận mã được định dạng chính xác ở đây - mã pizza.swift bên dưới - nhập
Có bạn nào có link tốt chia sẻ với mình nhé? Tôi đang tìm một trình soạn thảo dành cho lập trình viên NHANH CHÓNG có thể mở các tệp chứa hơn 100.000 dòng mã rất nhanh? Hiện tại mình đang dùng notepad atm, mở dòng 29000
Hiện tại tôi đang làm việc với dữ liệu theo dõi mắt nên có một tập dữ liệu khổng lồ (có hàng triệu hàng), vì vậy tôi muốn có một cách nhanh chóng để thực hiện việc này. Đây là một phiên bản đơn giản của nó. Dữ liệu cho bạn biết mắt đang nhìn vào đâu tại mỗi thời điểm và từng tệp chúng ta đang xem. X
Tôi chưa quen với điều này và muốn chọn âm thanh cho bộ hẹn giờ hoặc thiết bị khác. Làm cách nào để mở danh sách này để chọn một trong các âm thanh? Danh sách âm thanh cảnh báo Câu trả lời hay nhất Bạn sẽ không thể sử dụng âm thanh hệ thống trong ứng dụng của mình. Tuy nhiên, bạn có thể bao gồm các tệp âm thanh của riêng mình và hiển thị chúng
Tôi đã viết đoạn mã sau để xây dựng một mảng có các chuỗi tuần tự. Nó hoạt động như tôi mong đợi, nhưng tôi ước nó chạy nhanh hơn. Có cách nào hiệu quả hơn để tạo ra kết quả tôi muốn trong PowerShell không? Tôi mới sử dụng PowerShell, cảm ơn bạn rất nhiều
Tôi có một ma trận với một số hàng không duy nhất, ví dụ: x try y <- rle(apply(x, 1, Paste, thu gọn = "")) # y$lengths là vectơ con
Tôi gặp sự cố với chức năng "keyboardWillShown" của mình. Vì vậy, điều tôi muốn là menu xuất hiện ngay phía trên bàn phím khi nó mở ra. Nó hoạt động hoàn hảo trên Iphone 8 plus, 8, 7, 6. Tuy nhiên, khi tôi chạy Iphone trên trình mô phỏng
Tôi đang cố trích xuất dữ liệu từ API thông qua phương thức HTTP get trong Swift 5. Nó tải thành công dữ liệu khi khởi động, nhưng khi tôi làm mới trang thì nó báo "ngoài phạm vi", điều này là do dữ liệu không còn được đọc trong nhật ký của tôi nên không có gì trong chỉ mục.
Điều tôi muốn làm: Lấy dấu thời gian từ cơ sở dữ liệu của tôi và chuyển đổi nó sang múi giờ của người dùng. Mã của tôi: let tryItNow = "\(model.timestampName)" let format = D
Cho tên phông chữ và cỡ chữ, làm thế nào để tìm chiều rộng của chuỗi (CGFloat)? (Mục tiêu là đặt chiều rộng của UIView đủ rộng để chứa chuỗi.) Tôi có hai chuỗi: một chuỗi lặp lại "1" 36 lần và một chuỗi lặp lại "M" 36 lần.
Tôi đang cố phân tích cú pháp JSON này ["Items": ( { AccountBalance = 0; AlphabetType = 3; Description = "\U0631\U
Tôi đã đặt UILabel bên trong UINavigationBar. Tôi muốn tăng kích thước phông chữ của nhãn này dựa trên chiều cao của thanh điều hướng. Tôi muốn kích thước phông chữ lớn hơn khi thanh điều hướng lớn; khi cuộn và thu nhỏ điều hướng
Tôi muốn giới hạn đầu vào của người dùng chỉ ở những số hợp lệ và sử dụng các số sau: func textView(_ textView: UITextView, ShouldChangeTextIn range: NSRange, Rep
Hiện tại tôi có cơ sở dữ liệu với hơn 100.000 hình ảnh, chúng có kích thước khác nhau hoặc tương tự nhau, nhưng tôi muốn thực hiện những điều sau cho công ty của mình: Tôi chèn/tải lên một hình ảnh và hệ thống trả về hình ảnh có nhiều khả năng giống nhau. Tôi không biết nên sử dụng thuật toán nào, nhưng nó cần phải nhanh. Tôi có thể dự đoán
Trong dự án Swift của tôi, tôi có một nút và tôi muốn in trên nhãn vào thời điểm nút được nhấn. Làm thế nào để giải quyết vấn đề này? Câu trả lời hay nhất để thêm vào câu trả lời của DHEERAJ, bạn chỉ cần thực hiện trong func press(sender: UIButton
Tôi phải bình luận, hãy thử nhập mảng trong phân tích cú pháp. Tuy nhiên, có một vấn đề. Khi tôi cố tải một mảng từ Parse, đầu ra của tôi là ("Blah", "Blah", "Blah") là một bộ dữ liệu... không phải là một mảng TT... Làm thế nào
Ứng dụng của tôi có một lớp tên là MyDevice mà tôi sử dụng để giao tiếp với phần cứng. Phần cứng là tùy chọn và biến thể hiện cũng vậy: var theDevice:MyDevice = nil Sau đó, trong ứng dụng, tôi phải khởi tạo thiết bị
Tôi là một lập trình viên xuất sắc, rất giỏi!